0 Prolog
↳1 CutEliminatorProof (⇒, 0 ms)
↳2 Prolog
↳3 PrologToPiTRSProof (⇒, 0 ms)
↳4 PiTRS
↳5 DependencyPairsProof (⇔, 24 ms)
↳6 PiDP
↳7 DependencyGraphProof (⇔, 0 ms)
↳8 PiDP
↳9 UsableRulesProof (⇔, 0 ms)
↳10 PiDP
↳11 PiDPToQDPProof (⇒, 0 ms)
↳12 QDP
↳13 QDPSizeChangeProof (⇔, 0 ms)
↳14 YES
shuffle_in_gga(A, [], A) → shuffle_out_gga(A, [], A)
shuffle_in_gga([], B, B) → shuffle_out_gga([], B, B)
shuffle_in_gga(.(A, RestA), B, .(A, Shuffled)) → U1_gga(A, RestA, B, Shuffled, shuffle_in_gga(RestA, B, Shuffled))
shuffle_in_gga(A, .(B, RestB), .(B, Shuffled)) → U2_gga(A, B, RestB, Shuffled, shuffle_in_gga(A, RestB, Shuffled))
U2_gga(A, B, RestB, Shuffled, shuffle_out_gga(A, RestB, Shuffled)) → shuffle_out_gga(A, .(B, RestB), .(B, Shuffled))
U1_gga(A, RestA, B, Shuffled, shuffle_out_gga(RestA, B, Shuffled)) → shuffle_out_gga(.(A, RestA), B, .(A, Shuffled))
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
shuffle_in_gga(A, [], A) → shuffle_out_gga(A, [], A)
shuffle_in_gga([], B, B) → shuffle_out_gga([], B, B)
shuffle_in_gga(.(A, RestA), B, .(A, Shuffled)) → U1_gga(A, RestA, B, Shuffled, shuffle_in_gga(RestA, B, Shuffled))
shuffle_in_gga(A, .(B, RestB), .(B, Shuffled)) → U2_gga(A, B, RestB, Shuffled, shuffle_in_gga(A, RestB, Shuffled))
U2_gga(A, B, RestB, Shuffled, shuffle_out_gga(A, RestB, Shuffled)) → shuffle_out_gga(A, .(B, RestB), .(B, Shuffled))
U1_gga(A, RestA, B, Shuffled, shuffle_out_gga(RestA, B, Shuffled)) → shuffle_out_gga(.(A, RestA), B, .(A, Shuffled))
SHUFFLE_IN_GGA(.(A, RestA), B, .(A, Shuffled)) → U1_GGA(A, RestA, B, Shuffled, shuffle_in_gga(RestA, B, Shuffled))
SHUFFLE_IN_GGA(.(A, RestA), B, .(A, Shuffled)) → SHUFFLE_IN_GGA(RestA, B, Shuffled)
SHUFFLE_IN_GGA(A, .(B, RestB), .(B, Shuffled)) → U2_GGA(A, B, RestB, Shuffled, shuffle_in_gga(A, RestB, Shuffled))
SHUFFLE_IN_GGA(A, .(B, RestB), .(B, Shuffled)) → SHUFFLE_IN_GGA(A, RestB, Shuffled)
shuffle_in_gga(A, [], A) → shuffle_out_gga(A, [], A)
shuffle_in_gga([], B, B) → shuffle_out_gga([], B, B)
shuffle_in_gga(.(A, RestA), B, .(A, Shuffled)) → U1_gga(A, RestA, B, Shuffled, shuffle_in_gga(RestA, B, Shuffled))
shuffle_in_gga(A, .(B, RestB), .(B, Shuffled)) → U2_gga(A, B, RestB, Shuffled, shuffle_in_gga(A, RestB, Shuffled))
U2_gga(A, B, RestB, Shuffled, shuffle_out_gga(A, RestB, Shuffled)) → shuffle_out_gga(A, .(B, RestB), .(B, Shuffled))
U1_gga(A, RestA, B, Shuffled, shuffle_out_gga(RestA, B, Shuffled)) → shuffle_out_gga(.(A, RestA), B, .(A, Shuffled))
SHUFFLE_IN_GGA(.(A, RestA), B, .(A, Shuffled)) → U1_GGA(A, RestA, B, Shuffled, shuffle_in_gga(RestA, B, Shuffled))
SHUFFLE_IN_GGA(.(A, RestA), B, .(A, Shuffled)) → SHUFFLE_IN_GGA(RestA, B, Shuffled)
SHUFFLE_IN_GGA(A, .(B, RestB), .(B, Shuffled)) → U2_GGA(A, B, RestB, Shuffled, shuffle_in_gga(A, RestB, Shuffled))
SHUFFLE_IN_GGA(A, .(B, RestB), .(B, Shuffled)) → SHUFFLE_IN_GGA(A, RestB, Shuffled)
shuffle_in_gga(A, [], A) → shuffle_out_gga(A, [], A)
shuffle_in_gga([], B, B) → shuffle_out_gga([], B, B)
shuffle_in_gga(.(A, RestA), B, .(A, Shuffled)) → U1_gga(A, RestA, B, Shuffled, shuffle_in_gga(RestA, B, Shuffled))
shuffle_in_gga(A, .(B, RestB), .(B, Shuffled)) → U2_gga(A, B, RestB, Shuffled, shuffle_in_gga(A, RestB, Shuffled))
U2_gga(A, B, RestB, Shuffled, shuffle_out_gga(A, RestB, Shuffled)) → shuffle_out_gga(A, .(B, RestB), .(B, Shuffled))
U1_gga(A, RestA, B, Shuffled, shuffle_out_gga(RestA, B, Shuffled)) → shuffle_out_gga(.(A, RestA), B, .(A, Shuffled))
SHUFFLE_IN_GGA(A, .(B, RestB), .(B, Shuffled)) → SHUFFLE_IN_GGA(A, RestB, Shuffled)
SHUFFLE_IN_GGA(.(A, RestA), B, .(A, Shuffled)) → SHUFFLE_IN_GGA(RestA, B, Shuffled)
shuffle_in_gga(A, [], A) → shuffle_out_gga(A, [], A)
shuffle_in_gga([], B, B) → shuffle_out_gga([], B, B)
shuffle_in_gga(.(A, RestA), B, .(A, Shuffled)) → U1_gga(A, RestA, B, Shuffled, shuffle_in_gga(RestA, B, Shuffled))
shuffle_in_gga(A, .(B, RestB), .(B, Shuffled)) → U2_gga(A, B, RestB, Shuffled, shuffle_in_gga(A, RestB, Shuffled))
U2_gga(A, B, RestB, Shuffled, shuffle_out_gga(A, RestB, Shuffled)) → shuffle_out_gga(A, .(B, RestB), .(B, Shuffled))
U1_gga(A, RestA, B, Shuffled, shuffle_out_gga(RestA, B, Shuffled)) → shuffle_out_gga(.(A, RestA), B, .(A, Shuffled))
SHUFFLE_IN_GGA(A, .(B, RestB), .(B, Shuffled)) → SHUFFLE_IN_GGA(A, RestB, Shuffled)
SHUFFLE_IN_GGA(.(A, RestA), B, .(A, Shuffled)) → SHUFFLE_IN_GGA(RestA, B, Shuffled)
SHUFFLE_IN_GGA(A, .(B, RestB)) → SHUFFLE_IN_GGA(A, RestB)
SHUFFLE_IN_GGA(.(A, RestA), B) → SHUFFLE_IN_GGA(RestA, B)
From the DPs we obtained the following set of size-change graphs: